In client/server environments, database servers typically hold the database management system and the database. Access to the database is controlled by the database server. The database server may provide access to a client application through a database driver using a security mechanism. Many different security mechanisms are in use, including those using user IDs and passwords, encrypted passwords, Kerberos, and others. Database servers typically require a configuration setting that decides what security mechanisms are supported under that configuration setting. Because many security mechanisms are available for authentication of access to databases, the database driver often does not have knowledge of what the configuration setting is on a database server until a connection is made to the database server. In the process of making this connection, the database driver will request a security mechanism; however, it is very likely that the security mechanism requested will not be supported under the configuration setting on the database server.
When this situation occurs, the database driver will usually return an error to the application and the application will abort. An administration tool is then needed to find out which security mechanisms are supported by the database driver. The application may then be modified to accommodate the supported security mechanism. Use of this administrative tool is undesirable because it is inefficient and delays the authentication process. Some database drivers may provide a retry function using an alternative security mechanism when such an error occurs. However, these systems must limit themselves to a fixed initial security mechanism due to the complexity of retry algorithm to allow a plethora of initial security mechanisms. In other words, none of existing database drivers provide both multiple choices of initial security mechanisms and automatic synchronization of security mechanism with the database server.
Accordingly, there is a need for systems and methods for increasing the efficiency and speed of authentication of access to a database by an application. There is also a need for systems and methods for efficiently addressing the situation where a security mechanism requested by an application is not supported under the configuration setting on a database server.